package servicio;

import hbt.HibernateDAO;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.List;

import dominio.dto.ClienteTO;

public class Gestion extends UnicastRemoteObject implements remoto.Igestion{

	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private HibernateDAO hDAO;
	
	
	public Gestion() throws RemoteException{
		hDAO = HibernateDAO.getInstancia();
	}
	
	
	

	@Override
	public List<ClienteTO> getClientesConImportado() throws RemoteException{
		
		List<Object[]> nombreClientes = (List<Object[]>) hDAO.tuplas("select distinct Cliente.nombre from Cliente c "
				+ "											join c.pedidos p"
				+ "											join p.itemPedidos ip"
				+ "											join ip.articulo a"
				+ "											join a.importadores");
		
		
//		List<Cliente> nombreClientes = (List<Cliente>) hDAO.getLista("FROM Cliente");
		List<ClienteTO> clientes = new ArrayList<ClienteTO>();
		for (Object[] c : nombreClientes){
			ClienteTO cTO= new ClienteTO(c[0].toString());
			clientes.add(cTO);
		}
		
		return clientes;
	}


	@Override
	public int getNumero() throws RemoteException {
		
		return 0;
	}




	@Override
	public List<Object[]> getCantidadImportadoresPorArticulo()
			throws RemoteException {
		
		@SuppressWarnings("unchecked")
		List<Object[]> importadoresArticulo = (List<Object[]>)
								hDAO.getSession().createQuery("select COUNT(*) AS cantImportador, "
				+ "				A.id, A.descripcion "
				+ "				from Importado A  join A.importadores group by A.id, A.descripcion").list();
		
		return importadoresArticulo;
	}

}
